package com.yy.kit.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils;

import com.xiaoleilu.hutool.io.FileUtil;

/**
 * <p>
 * 文件操作工具类
 * </p>
 * 
 * @author 杨阳
 * @since 2017年9月7日
 *
 */
public class YYFileKits {

	/**
	 * <p>
	 * 获取某个文件md5的值，因为文件md5是唯一的，可以判断文件是否重复
	 * </p>
	 * 
	 * @param file
	 *            文件
	 * @return {@link String}
	 * @throws IOException
	 *             没有找到文件异常
	 * @throws NoSuchAlgorithmException
	 *             安全异常
	 * @author 杨阳
	 * @since 2017年9月7日
	 */
	public static String getFileMd5(File file) throws IOException, NoSuchAlgorithmException {
		FileInputStream in = new FileInputStream(file);
		String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(in));
		IOUtils.closeQuietly(in);
		return md5;
	}

	/**
	 * <p>
	 * 传入文件的byte数组判断获取文件md5的值，因为md5值是唯一的，可以判断文件是否重复
	 * </p>
	 * 
	 * @param filebyte
	 *            文件转换的byte数组
	 * @return {@link String}
	 * @throws IOException
	 *             没有找到文件异常
	 * @throws NoSuchAlgorithmException
	 *             安全异常
	 * @author 杨阳
	 * @since 2017年9月7日
	 */
	public static String getFileMd5(byte[] filebyte) {
		String md5 = DigestUtils.md5Hex(filebyte);
		return md5;
	}

	/**
	 * <p>
	 * 传入文件路径，创建文件
	 * </p>
	 * 
	 * @param path
	 *            文件所在位置
	 * @return {@link File}
	 * @author 杨阳
	 * @since 2017年9月8日
	 */
	public static File file(String path) {
		return FileUtil.file(path);
	}

}
